import { login, getUserInfo, getStaffInfo } from '@/api/user'
import { getToken, removeToken, setToken } from '@/utils/auth'
// import { reject, resolve } from 'core-js/fn/promise'
const state = {
  token: getToken() || '',
  // token可以从getToken里面获取token
  // 如果是没登陆的情况下token: getToken()这样是获取不到的，那就给他加一个''空字符串
  userInfo: {} // 个人信息
}
const mutations = {
  // 设置token
  setToken(state, newtoken) {
    state.token = newtoken
    setToken(newtoken) // 把res.data.data存到setToken（也就是存到本地）
  },
  // 设置用户信息
  setUserInfo(state, newUserInfo) {
    state.userInfo = newUserInfo
  },
  // 删除token
  removeTokenMutations(state) {
    state.token = ''
    removeToken()
  }, // 两个清除信息分开写可以提高灵活性
  // 删除用户信息
  removeuserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // 通过接口获取token
  async getToken(context, data) {
    const res = await login(data)
    context.commit('setToken', res.data)
    return res.data
  },
  // getToken(context, data) {
  //   // 通过Promise的resolve, rejec来返回成功或失败的结果
  //   return new Promise((resolve, reject) => {
  //     login(data)
  //       .then(res => {
  //         resolve()
  //         context.commit('setToken', res.data)
  //       })
  //       .catch(err => {
  //         reject()
  //         console.log(err)
  //       })
  //   })
  // },
  // 获取用户身份信息
  async getUserInfo(context) {
    // 合并用户基本资料和员工基本信息，并一起给到userInfo
    const { data: data1 } = await getUserInfo()
    const { data: data2 } = await getStaffInfo(data1.userId)
    // console.log(data2)
    const obj = {
      ...data1,
      ...data2
    }
    context.commit('setUserInfo', obj)
    return obj
  },
  //   getUserInfo(context) {
  //     return new Promise((resolve, reject) => {
  //       // 接口请求
  //       getUserInfo()
  //         .then(res => {
  //           context.commit('setUserInfo', res.data)
  //           resolve(res)
  //         })
  //         .catch(err => {
  //           console.log(err)
  //           reject(err)
  //         })
  //     })
  //   }
  // 封装清除信息，直接调用logout
  logout(context) {
    context.commit('removeTokenMutations')
    context.commit('removeuserInfo')
    context.commit('')
  }
}
const getters = {}
export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}
